home *** CD-ROM | disk | FTP | other *** search
/ Network CD 2 / Network CD - Volume 2.iso / programs / internet / tcp / amitcp / amitcp-src-22.lha / AmiTCP-2.2 / src / appl / napsaterm / keymap.c < prev    next >
Encoding:
C/C++ Source or Header  |  1993-10-07  |  1.4 KB  |  57 lines

  1. RCS_ID_C "$Id: keymap.c,v 0.3 1993/03/29 07:49:29 ppessi Exp $";
  2. /*
  3.  * Find a named keymap
  4.  * If named keymap can not be found, load it from disk
  5.  *
  6.  * $Author: ppessi $ $Revision: 0.3 $ $Date: 1993/03/29 07:49:29 $
  7.  */
  8.  
  9. #include "devices/keymap.h"
  10. #include "clib/keymap_protos.h"
  11. #include "clib/exec_protos.h"
  12.  
  13. #ifdef __SASC
  14. #include <pragmas/keymap_pragmas.h>
  15. #endif
  16.  
  17. #include <exec/types.h>
  18. #include <libraries/dos.h>
  19. #include <clib/dos_protos.h>
  20. #include <string.h>
  21. #include <stdio.h>
  22.  
  23. #define UNLESS(x) if(!(x))
  24. #define UNTIL(x)  while(!(x))
  25.  
  26. char keyMapDir[] = "Devs:keymaps/"; 
  27. #define MAXKEYMAPLEN 20
  28.  
  29. struct KeyMap *
  30. FindKeyMap(char * keyMapName)
  31. {
  32.     struct KeyMapResource *keyMapBase;
  33.     struct KeyMapNode *keymap_n;
  34.     BPTR keySegs;
  35.     char fullKeyMapName[sizeof(keyMapDir)+MAXKEYMAPLEN];
  36.  
  37.     UNLESS(keyMapBase=(struct KeyMapResource *)OpenResource("keymap.resource"))
  38.         return NULL;
  39.  
  40.     /* Is it already loaded? */    
  41.     keymap_n = FindName(&(keyMapBase->kr_List), keyMapName);
  42.     if (!keymap_n) {
  43.         /* Not found, we load it from devs:keymaps */
  44.         strcpy(fullKeyMapName, keyMapDir);
  45.         strncat(fullKeyMapName, keyMapName, MAXKEYMAPLEN);
  46.         keySegs = LoadSeg(fullKeyMapName);
  47.         if (!keySegs) 
  48.           return NULL;
  49.         keymap_n = (struct KeyMapNode *)((LONG *) (keySegs << 2) + 1);
  50.         AddHead(&(keyMapBase->kr_List), (struct Node *)keymap_n);
  51.     }
  52.     return &(keymap_n->kn_KeyMap);
  53. }
  54.  
  55.  
  56.  
  57.